package org.albertsanso.yoigo.shopchat.co;

import java.util.List;

import org.albertsanso.yoigo.shopchat.YoigoShopChatActivity;
import org.albertsanso.yoigo.shopchat.dao.iface.SQLiteShopChatDao;
import org.albertsanso.yoigo.shopchat.dao.iface.ShopChatDao;
import org.albertsanso.yoigo.shopchat.model.Mensaje;
import org.albertsanso.yoigo.shopchat.model.Tienda;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.telephony.TelephonyManager;


public class ShopChatComponent {

	//private final static String TEST_TELEFONO = "650735499";
	private final static String TEST_TELEFONO = "675529515";
	public static final String TIENDA_KO_NOT_FOUND = "KO";
	

	/*
	 * PUBLIC INTERFACE ************************************************************************************
	 */
	
	public Tienda getDatosTiendaByTelefonoLocal() {
		String numeroTelefono = getMyPhoneNumber();
		return getDatosTiendaByNumeroTelefono(numeroTelefono);
	}
	
	public List<Tienda> getTodasTiendas() {
		return shopChatDao.getTodasTiendas();
	}
	
	public List<Mensaje> actualizarMensajes(String strTiendaId, String numeroTelefono) {
		List<Mensaje> mensajesList = null;
		 mensajesList = shopChatDao.
				 getConversacionByTiendaIdAndNumeroTelefono(strTiendaId, numeroTelefono);
		 
		 /*
		 removeAllMessages();
		 for (Mensaje mensaje : mensajesList) {
			 insertaMensaje(mensaje);
		 }
		 */

		return mensajesList;
	}
	
	public Boolean hayMensajeByTiendaIdAndNumeroTelefono(String tiendaId,
			String numeroTelefono) {
		return shopChatDao.hayMensajeByTiendaIdAndNumeroTelefono(tiendaId, numeroTelefono);
	}
	
	public Mensaje getUltimoMensaje(String strTiendaId, String numeroTelefono) {
	
		Mensaje mensaje = null;
		
		List<Mensaje> mensajesList = null;
		 mensajesList = shopChatDao.
				 getConversacionByTiendaIdAndNumeroTelefono(strTiendaId, numeroTelefono);
		mensaje = mensajesList.get(0);
		return mensaje;
	}
	
	public Boolean enviarConsulta(String tiendaId, String numeroTelefono, String mensaje) {
		return shopChatDao.enviarConsulta(tiendaId, numeroTelefono, mensaje);
	}
	
	public String getMyPhoneNumber(){
		
		SharedPreferences settings = activity.getSettings();
    	Editor settingsEditor = settings.edit();
    	
    	String candidatePhoneNumber = settings.getString(YoigoShopChatActivity.PHONE_NUMBER_ID, "");
    	if ("".equals(candidatePhoneNumber)) {

    		TelephonyManager mTelephonyMgr = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
    		candidatePhoneNumber = mTelephonyMgr.getLine1Number();
    		//candidatePhoneNumber = TEST_TELEFONO;

    		if (!"".equals(candidatePhoneNumber)) {

    			settingsEditor.putString(YoigoShopChatActivity.PHONE_NUMBER_ID, candidatePhoneNumber);
    			settingsEditor.commit();
    		}
    	}

	    return candidatePhoneNumber;
	}
	
	/*
	 * PRIVATE INTERFACE ************************************************************************************
	 */
	public Tienda getDatosTiendaByTiendaId(String strTiendaId) {
		Tienda tienda = null;
		tienda = shopChatDao.getDatosTiendaByTiendaId(strTiendaId);
		return tienda;
	}

	
	private String getTiendaByTelefono(String numeroTelefono) {
		return shopChatDao.getTiendaByTelefono(numeroTelefono);
	}
	
	private Tienda getDatosTiendaByNumeroTelefono(String numeroTelefono) {
		Tienda tienda = null;
		String strTiendaId = getTiendaByTelefono(numeroTelefono);
		if (!TIENDA_KO_NOT_FOUND.equals(strTiendaId)) {
			tienda = shopChatDao.getDatosTiendaByTiendaId(strTiendaId);
		}
		return tienda;
	}

	private ShopChatDao shopChatDao;
	private YoigoShopChatActivity activity;
	private SQLiteShopChatDao mysqliteShopChatDao;
	
	public ShopChatDao getShopChatDao() {
		return shopChatDao;
	}

	public void setShopChatDao(ShopChatDao shopChatDao) {
		this.shopChatDao = shopChatDao;
	}

	public Activity getActivity() {
		return activity;
	}

	public void setActivity(YoigoShopChatActivity activity) {
		this.activity = activity;
	}

	public SQLiteShopChatDao getMysqliteShopChatDao() {
		return mysqliteShopChatDao;
	}

	public void setMysqliteShopChatDao(SQLiteShopChatDao mysqliteShopChatDao) {
		this.mysqliteShopChatDao = mysqliteShopChatDao;
	}	
}
